﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Crosland.Automotriz.Entidad;
using System.Data.SqlClient;

namespace Crosland.Automotriz.Data.Dao.Linq
{
    public class clsT_VEN_VEHICULOS_OBSEQUIOSDAO
    {
        private readonly DM_CROSLAND_20130417Entities ContextoDeObjs = new DM_CROSLAND_20130417Entities();

        public List<T_VEN_VEHICULOS_OBSEQUIOS_RESULT> Listar(int ID_TIEMPO_INI, int ID_TIEMPO_FIN, int ID_CLIENTE)
        {
            var p = new object[] { new SqlParameter("@ID_TIEMPO_INI", ID_TIEMPO_INI), new SqlParameter("@ID_TIEMPO_FIN", ID_TIEMPO_FIN), new SqlParameter("@ID_CLIENTE", ID_CLIENTE) };
            var resultado = ContextoDeObjs.ExecuteStoreQuery<T_VEN_VEHICULOS_OBSEQUIOS_RESULT>("select * from FU_Ventas_Torito_Obsequio(@ID_TIEMPO_INI,@ID_TIEMPO_FIN,@ID_CLIENTE) order by fec_factura", p).AsQueryable().ToList();
            return resultado;
        }

        public List<T_VEN_VEHICULOS_OBSEQUIOS> Seleccionar(T_VEN_VEHICULOS_OBSEQUIOS Obj)
        {
            var p = new object[] { new SqlParameter("@NRO_FACTURA", Obj.NRO_FACTURA), new SqlParameter("@NRO_POSICION", Obj.NRO_POSICION) };
            var resultado = ContextoDeObjs.ExecuteStoreQuery<T_VEN_VEHICULOS_OBSEQUIOS>("exec USP_VEN_VEHICULOS_OBSEQUIOS_SELECT @NRO_FACTURA,@NRO_POSICION", p).AsQueryable().ToList();
            return resultado;
        }

        public bool Insertar(T_VEN_VEHICULOS_OBSEQUIOS Obj)
        {
            try
            {
                var p = new object[] { 
                    new SqlParameter("@NRO_FACTURA", Obj.NRO_FACTURA), 
                    new SqlParameter("@NRO_POSICION", Obj.NRO_POSICION), 
                    new SqlParameter("@DES_COMENTARIO", Obj.DES_COMENTARIO), 
                    new SqlParameter("@FEC_ENTREGA", Obj.FEC_ENTREGA),
                    new SqlParameter("@ID_USUARIO_REGISTRA", Obj.ID_USUARIO_REGISTRA),
                    new SqlParameter("@IND_ACTIVO", Obj.IND_ACTIVO)
                };
                int resultado = ContextoDeObjs.ExecuteStoreCommand("exec USP_VEN_VEHICULOS_OBSEQUIOS_INSERTAR @NRO_FACTURA,@NRO_POSICION,@DES_COMENTARIO,@FEC_ENTREGA,@ID_USUARIO_REGISTRA,@IND_ACTIVO", p);

                if (resultado == 1)
                    return true;
                else
                    return false;
            }
            catch (Exception)
            {
                return false;
            }
        }

        public bool Actualizar(T_VEN_VEHICULOS_OBSEQUIOS Obj) 
        {
            try
            {
                var p = new object[] { 
                    new SqlParameter("@NRO_FACTURA", Obj.NRO_FACTURA), 
                    new SqlParameter("@NRO_POSICION", Obj.NRO_POSICION), 
                    new SqlParameter("@DES_COMENTARIO", Obj.DES_COMENTARIO), 
                    new SqlParameter("@FEC_ENTREGA", Obj.FEC_ENTREGA),
                };
                int resultado = ContextoDeObjs.ExecuteStoreCommand("exec USP_VEN_VEHICULOS_OBSEQUIOS_ACTUALIZAR @NRO_FACTURA,@NRO_POSICION,@DES_COMENTARIO,@FEC_ENTREGA", p);

                if (resultado == 1)
                    return true;
                else
                    return false;
            }
            catch (Exception)
            {
                return false;
            }
        }

        public List<MapObsequiosAgrupado> ListarAgrupado(int ID_VEN_CONTROL_ENTREGA, int ID_VENDEDOR, string cartera)
        {
            var p = new object[] { new SqlParameter("@ID_VEN_CONTROL_ENTREGA", ID_VEN_CONTROL_ENTREGA), new SqlParameter("@ID_VENDEDOR", ID_VENDEDOR), new SqlParameter("@cartera", cartera) };
            var resultado = ContextoDeObjs.ExecuteStoreQuery<MapObsequiosAgrupado>("select * from FU_Ventas_Torito_Obsequio_Resumen(@ID_VEN_CONTROL_ENTREGA,@ID_VENDEDOR,@cartera) order by Supervisor,FACTURADAS desc", p).AsQueryable().ToList();
            return resultado;
        }

        public List<MapVentas> ListarVentas_x_Folio(string NRO_FOLIO)
        {
            var p = new object[] { new SqlParameter("@NRO_FOLIO", NRO_FOLIO) };
            var resultado = ContextoDeObjs.ExecuteStoreQuery<MapVentas>("exec USP_Venta_Buscar_x_Folio @NRO_FOLIO", p).AsQueryable().ToList();
            return resultado;
        }
    }
}
